#include <ros/ros.h>
#include <geometry_msgs/Twist.h>

int main(int argc,char **argv){
    //ROS节点初始化
    ros::init(argc,argv,"velocity_publisher");
    //创建节点句柄，方便对节点资源的使用和管理
    ros::NodeHandle n;
    //在ROS Master端注册一个publisher，并告诉系统此Publisher
    //发布以 “/turtle1/cmd_vel” 为话题的 geometry_msgs::Twist 类型消息。
    //第二个参数10则表示消息发布队列的大小，当发布消息的实际速度较慢时，
    //Publisher会将消息存储在一定空间的队列中；如果消息数量超过队列的大小时，ROS会自动删除队列中最早入队的消息。
    ros::Publisher turtle_vel_pub =n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",10);

    // 设置循环的频率，单位为Hz
    ros::Rate loop_rate(10);

    while(ros::ok()){
        //初始化geometry_msgs::Twist类型的消息
        geometry_msgs::Twist vel_msg;
        vel_msg.linear.x=0.5;
        vel_msg.angular.z=0.2;
        //发布消息
        turtle_vel_pub.publish(vel_msg);
        ROS_INFO("Publish turtle velocity command[%0.2f m/s,%0.2f rad/s]",vel_msg.linear.x,vel_msg.angular.z);

        //按照设置的频率 10HZ延时相应的时间，以保证循环维持一致的时间周期。
        loop_rate.sleep();

    }
    

    return 0;
}

